package cc.rengu.igas.bomp.common.dao;

import cc.rengu.igas.bomp.common.entity.Organization;
import cc.rengu.oltp.utility.bean.PageInfo;
import cc.rengu.oltp.utility.bean.PageResult;

import java.util.List;

/**
 * 机构信息表操作接口类
 * Created by 王成 on 2020/3/10
 */
public interface OrganizationMapper {
    /**
     * 登记机构信息表
     *
     * @param organization 机构信息
     * @return 0-成功，其它-失败
     * @throws Exception 异常
     */
    int insertOrganization(Organization organization) throws Exception;

    /**
     * 更新机构信息表
     *
     * @param organization 机构信息
     * @return 0-成功，其它-失败
     * @throws Exception 异常
     */
    int updateOrganizationById(Organization organization) throws Exception;

    /**
     * 根据非业务主键查询机构信息
     *
     * @param instId 多法人标识
     * @param id     非业务主键
     * @return 机构信息
     * @throws Exception 异常
     */
    Organization selectOrganizationById(String instId, String id) throws Exception;

    /**
     * 根据业务主键查询机构信息
     *
     * @param instId  多法人标识
     * @param orgCode 机构代码
     * @return 机构信息
     * @throws Exception 异常
     */
    Organization selectOrganizationByPrimaryKey(String instId, String orgCode) throws Exception;

    /**
     * 根据多法人标识查询机构信息
     *
     * @param instId 多法人标识
     * @return 机构信息
     * @throws Exception 异常
     */
    List<Organization> selectOrganizationByInstId(String instId) throws Exception;

    /**
     * 根据当前登录用户所属机构查询下属机构
     *
     * @param instId  多法人标识
     * @param orgCode 机构编码
     * @return 机构信息
     * @throws Exception 异常
     */
    List<Organization> selectOrgInfoByorgCode(String instId, String orgCode) throws Exception;

    /**
     * 根据当前登录用户所属机构查询下属机构
     *
     * @param instId       机构号
     * @param superOrgCode 用户所属机构号,查此机构号下的机构信息
     * @param instCode     查询机构代码(非必传)
     * @param instName     查询机构名(非必传)
     * @return 机构信息列表
     * @throws Exception 异常信息
     */
    List<Organization> selectOrgInfoByInstCodeAndInstName(String instId, String superOrgCode, String instCode, String instName) throws Exception;

    /**
     * 分页根据当前登录用户所属机构查询下属机构
     *
     * @param instId       机构号
     * @param superOrgCode 用户所属机构号,查此机构号下的机构信息
     * @param instCode     查询机构代码(非必传)
     * @param instName     查询机构名(非必传)
     * @param pageInfo     分页信息
     * @return 机构信息列表
     * @throws Exception 异常信息
     */
    PageResult selectOrgInfoByPageAndInstCodeAndInstName(String instId, String superOrgCode, String instCode, String instName, PageInfo pageInfo) throws Exception;

}
